package com.datamining.myscalatest

import org.apache.spark.{SparkConf, SparkContext}

/**
  * Created by Administrator on 2016/10/29.
  */
object ScalaTest {

  def main(args: Array[String]): Unit = {

    //    val sparkConf = new SparkConf();
    //    sparkConf.setMaster("local[1]"); // 本地模式
    //    sparkConf.setAppName("my_test");
    //    val sparkContext = new SparkContext(sparkConf);
    //    //    val usersRdd = sparkContext.textFile("file:///J:/idea_workspace/spark-test/src/main/resources/data/ml-1m/users.dat").map(lin => lin.split("::")(1)).map(x => (x, 1)).reduceByKey(_ + _).map(x => (x._2, x._1)).sortByKey().map(x => (x._2, x._1));
    //    //    val coutn = usersRdd.collect();
    //    //    coutn.foreach(x => println(x));
    //
    //    val user_item_rdd = sparkContext.textFile("file:///J:/idea_workspace/spark-test/src/main/resources/data/ml-1m/userId_itemId.txt").map(_.split("::") match {
    //      case Array(order_id, item_id) => (order_id, item_id)
    //    });
    //    user_item_rdd.takeSample(false, 10).foreach(println)
    //
    //    val user_items_rdd = user_item_rdd.sortByKey().groupByKey().map(x => (x._1, x._2.toList.distinct.sorted));
    //    user_items_rdd.takeSample(false, 10).foreach(println)
    //    //    (11111,List(1, 2, 3))
    //    //    (22222,List(1, 2))
    //    //    (33333,List(1))
    //
    //    // 以后会多次用到,避免重算
    //    user_items_rdd.cache();
    //
    //    val order_count = user_items_rdd.count();
    //    println(order_count)
    //
    //    // 1.
    //    val item_1 = user_items_rdd.flatMap(_._2).map((_, 1)).reduceByKey(_ + _)
    //    item_1.takeSample(false, 10).foreach(println);
    //    //    (1,3)
    //    //    (2,2)
    //    //    (3,1)
    //
    //    val item_1_probability = item_1.map(x => (x._1, x._2, x._2.toDouble / order_count)).sortBy(x => x._3.toDouble, false, 3);
    //    item_1_probability.takeSample(false, 10).foreach(println);
    //    item_1_probability.collect().foreach(println)
    //    //    (1,3,1.0)
    //    //    (2,2,0.6666666666666666)
    //    //    (3,1,0.3333333333333333)
    //
    //
    //
    //    //
    //    //    //    // 2.
    //    //    //    val item_2 = user_items_rdd.flatMap(x => {
    //    //    //      val rankedList = new ArrayList[String]();
    //    //    //      RankUtil.rank(rankedList, 0, "", x._2.toArray, 2);
    //    //    //      return (rankedList, 1)
    //    //    //    });
    //    //    //    //    item_2.takeSample(false, 10).foreach(println);
    //    //
    //    //    val lll = List(1, 2, 3, 4, 5, 6);
    //    //    println(lll);
    //    //    val rankedList = new ArrayList[String]();
    //    //    RankUtil.rank(rankedList, 0, "",lll, 2);
    //    //    println(rankedList)
    //
    //    //    val rankedList = new ArrayList();
    //    //    val sss : Array[String] = Array("a", "b","c");
    //    //
    //    //    RankUtil.rank(rankedList, 0,"", sss , 2);
    //    //    rankedList.forEach( x -> {
    //    //      System.out.println(x);
    //    //    });

    val lis = List("a", "b", "c");
    println(lis)

  }

  def rank(lis: List[String], n: Int): List[String] = {
    val resultList = List();
    if (lis != null && lis.length < n) {
      return resultList;
    } else if (lis.length == n) {
      return lis;
    }

    for (i <- 0 to (lis.length - n)){
      lis
    }

    return null;
  }
}
